package com.zp.base.service.clinicItemDict;

import com.zp.base.api.bo.ClinicItemDictBo;
import com.zp.base.api.vo.ClinicItemDictVo;
import com.zp.base.api.vo.PriceListVo;
import com.zp.common.myBatis.core.page.PageQuery;
import com.zp.common.myBatis.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 诊疗项目Service接口
 *
 * @author zhang peng
 * @ date 2023-01-08
 */
public interface IClinicItemDictService {

    /**
     * 查询诊疗项目
     */
    ClinicItemDictVo queryById (String clinicItemId);

    /**
     * 查询诊疗项目列表(分页)
     */
    TableDataInfo<ClinicItemDictVo> queryPageList (ClinicItemDictBo bo, PageQuery pageQuery);

    /**
     * 查询诊疗项目列表(不分页)
     */
    List<ClinicItemDictVo> queryList (ClinicItemDictBo bo);

    /**
     * 新增诊疗项目
     */
    ClinicItemDictBo insertByBo (ClinicItemDictBo bo);

    /**
     * 修改诊疗项目
     */
    Boolean updateByBo (ClinicItemDictBo bo);

    /**
     * 校验并批量删除诊疗项目信息
     */
    Boolean deleteWithValidByIds (Collection<String> ids, Boolean isValid);

    /**
     * 获取价表列表
     *
     * @param orgId          机构id
     * @param itemClassArray 查询参数：项目分类数组
     * @param itemClassArray 查询参数：诊疗项目id数组
     * @return
     */
    List<PriceListVo> getPriceList (String orgId, List<String> itemClassArray, List<String> clinicItemIdArray);

    /**
     * 诊疗项目自动补全
     */
    List<ClinicItemDictVo> autoBuildQuery (ClinicItemDictBo bo);

    /**
     * 获取诊疗项目list 其中包含每条项目的价表list
     *
     * @param orgId
     * @param itemClassArray
     * @param clinicItemIdArray
     * @return
     */
    List<ClinicItemDictVo> getClinicItemsAndPriceList (String orgId, List<String> itemClassArray, List<String> clinicItemIdArray);
}
